package com.ruoyi.system.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.system.domain.PStoreProductAttrValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.math.BigDecimal;
import java.util.List;

import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商品业务对象 p_store_product
 *
 * @author ruoyi
 * @date 2022-08-01
 */

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("商品业务对象")
public class PStoreProductBo extends BaseEntity {

    /**
     * 商品id
     */
    @ApiModelProperty(value = "商品id", required = true)
    @NotNull(message = "商品id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
     */
    @ApiModelProperty(value = "商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)", required = true)
    private Integer merId;

    /**
     * 商品图片
     */
    @ApiModelProperty(value = "商品图片", required = true)
    @NotBlank(message = "商品图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private String image;

    /**
     * 轮播图
     */
    @ApiModelProperty(value = "轮播图", required = true)
    @NotBlank(message = "轮播图不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sliderImage;

    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称", required = true)
    @NotBlank(message = "商品名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String storeName;

    /**
     * 商品简介
     */
    @ApiModelProperty(value = "商品简介", required = true)
    @NotBlank(message = "商品简介不能为空", groups = { AddGroup.class, EditGroup.class })
    private String storeInfo;

    /**
     * 商品详情
     */
    @ApiModelProperty(value = "商品详情", required = true)
    @NotBlank(message = "商品详情不能为空", groups = { AddGroup.class, EditGroup.class })
    private String content;

    /**
     * 关键字
     */
    @ApiModelProperty(value = "关键字", required = true)
    private String keyword;

    /**
     * 商品条码（一维码）
     */
    @ApiModelProperty(value = "商品条码（一维码）", required = true)
    private String barCode;

    /**
     * 分类id
     */
    @ApiModelProperty(value = "分类id", required = true)
    @NotBlank(message = "分类id不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cateId;

    /**
     * 商品价格
     */
    @ApiModelProperty(value = "商品价格", required = true)
    private BigDecimal price;

    /**
     * 会员价格
     */
    @ApiModelProperty(value = "会员价格", required = true)
    private BigDecimal vipPrice;

    /**
     * 市场价
     */
    @ApiModelProperty(value = "市场价", required = true)
    private BigDecimal otPrice;

    /**
     * 邮费
     */
    @ApiModelProperty(value = "邮费", required = true)
    private BigDecimal postage;

    /**
     * 单位名
     */
    @ApiModelProperty(value = "单位名", required = true)
    private String unitName;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序", required = true)
    private Long sort;

    /**
     * 销量
     */
    @ApiModelProperty(value = "销量", required = true)
    private Long sales;

    /**
     * 库存
     */
    @ApiModelProperty(value = "库存", required = true)
    private Long stock;

    /**
     * 状态（0：未上架，1：上架）
     */
    @ApiModelProperty(value = "状态（0：未上架，1：上架）", required = true)
    private String isShow;

    /**
     * 是否热卖
     */
    @ApiModelProperty(value = "是否热卖", required = true)
    @NotNull(message = "是否热卖不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isHot;

    /**
     * 是否优惠
     */
    @ApiModelProperty(value = "是否优惠", required = true)
    private String isBenefit;

    /**
     * 是否精品
     */
    @ApiModelProperty(value = "是否精品", required = true)
    @NotNull(message = "是否精品不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isBest;

    /**
     * 是否新品
     */
    @ApiModelProperty(value = "是否新品", required = true)
    @NotNull(message = "是否新品不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isNew;

    /**
     * 添加时间
     */
    @ApiModelProperty(value = "添加时间", required = true)
    private Long addTime;

    /**
     * 是否包邮
     */
    @ApiModelProperty(value = "是否包邮", required = true)
    private String isPostage;
    /**
     * 商户是否代理 0不可代理1可代理
     */
    @ApiModelProperty(value = "商户是否代理 0不可代理1可代理", required = true)
    private String merUse;

    /**
     * 获得积分
     */
    @ApiModelProperty(value = "获得积分", required = true)
    private Integer giveIntegral;

    /**
     * 成本价
     */
    @ApiModelProperty(value = "成本价", required = true)
    @NotNull(message = "成本价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal cost;

    /**
     * 秒杀状态 0 未开启 1已开启
     */
    @ApiModelProperty(value = "秒杀状态 0 未开启 1已开启", required = true)
    @NotNull(message = "秒杀状态 0 未开启 1已开启不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isSeckill;

    /**
     * 砍价状态 0未开启 1开启
     */
    @ApiModelProperty(value = "砍价状态 0未开启 1开启", required = true)
    private String isBargain;

    /**
     * 是否优品推荐
     */
    @ApiModelProperty(value = "是否优品推荐", required = true)
    @NotNull(message = "是否优品推荐不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isGood;

    /**
     * 是否单独分佣
     */
    @ApiModelProperty(value = "是否单独分佣", required = true)
    private String isSub;

    /**
     * 虚拟销量
     */
    @ApiModelProperty(value = "虚拟销量", required = true)
    private Long ficti;

    /**
     * 浏览量
     */
    @ApiModelProperty(value = "浏览量", required = true)
    private Long browse;

    /**
     * 商品二维码地址(用户小程序海报)
     */
    @ApiModelProperty(value = "商品二维码地址(用户小程序海报)", required = true)
    private String codePath;

    /**
     * 淘宝京东1688类型
     */
    @ApiModelProperty(value = "淘宝京东1688类型", required = true)
    private String soureLink;

    @ApiModelProperty(value = "规格id")
    private Long standardId;

    /**
     * 主图视频链接
     */
    @ApiModelProperty(value = "主图视频链接", required = true)
    private String videoLink;

    /**
     * 运费模板ID
     */
    @ApiModelProperty(value = "运费模板ID", required = true)
    private Long tempId;

    /**
     * 规格 0单 1多
     */
    @ApiModelProperty(value = "规格 0单 1多", required = true)
    private String specType;

    /**
     * 活动显示排序0=默认, 1=秒杀，2=砍价，3=拼团
     */
    @ApiModelProperty(value = "活动显示排序0=默认, 1=秒杀，2=砍价，3=拼团", required = true)
    private String activity;

    /**
     * 展示图
     */
    @ApiModelProperty(value = "展示图", required = true)
    private String flatPattern;

    /**
     * 是否回收站
     */
    @ApiModelProperty(value = "是否回收站", required = true)
    private Integer isRecycle;

    @ApiModelProperty(value = "商品属性", required = true)
    private List<AttrBo> attr;

    @ApiModelProperty(value = "商品属性详情", required = true)
    private List<PStoreProductAttrValue> attrValue;

    @ApiModelProperty(value = "优惠券id集合")
    private List<Long> couponIds;

}
